﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Unis.Framework.Core.Configuration;
using Unis.Framework.Core.Infrastructure.DependencyManagement;

namespace Unis.Framework.Core.Infrastructure
{
    /// <summary>
    ///作用：实现此接口的类可以作为各种服务构成的平台引擎。
    ///通过这接口能够实现访问大多数平台的编辑功能和模块
    /// </summary>
    /// <remarks>
    ///作者：王强
    ///时间：2016年11月10日 
    /// </remarks>
    public interface IEngine
    {
        ContainerManager ContainerManager { get; }

        /// <summary>
        /// Initialize components and plugins in the macaca environment.
        /// </summary>
        /// <param name="config">Config</param>
        void Initialize(UnisConfig config);

        T Resolve<T>() where T : class;

        T Resolve<T>(string key) where T : class;

        object Resolve(Type type);

        T[] ResolveAll<T>();
    }
}
